#pragma once

#include <memory>
#include <functional>

class Buffer;
class HttpConn;
class Timestamp;

using HttpConnPtr = std::shared_ptr<HttpConn>;
using ConnectionCallback = std::function<void(const HttpConnPtr &)>;
using CloseCallback = std::function<void(const HttpConnPtr &)>;
using WriteCompleteCallback = std::function<void(const HttpConnPtr &)>;
using HighWaterMarkCallback = std::function<void(const HttpConnPtr &, size_t)>;

using MessageCallback = std::function<void(const HttpConnPtr &,
                                           Buffer *,
                                           Timestamp)>;